/*
按列填充
*/

// 旋转
mat2 rotate(float angle){
    float radian=radians(angle);
    float s=sin(radian),c=cos(radian);
    // 按列填充
    return mat2(
        c,-s,// 第一列
        s,c// 第二列
    );
}
// 沿着X轴缩放
mat2 scaleX(float x){
    return mat2(
        x,0.,
        0.,1.
    );
}
// 沿着Y轴缩放
mat2 scaleY(float y){
    return mat2(
        1.,0.,
        0.,y
    );
}
// 指定轴缩放
mat2 scale(vec2 axis){
    float x=axis.x,y=axis.y;
    return mat2(
        x,0.,
        0.,y
    );
}
// 沿着X轴镜像
mat2 mirrorX(){
    return mat2(
        -1.,0.,
        0.,1.
    );
}
// 沿着Y轴镜像
mat2 mirrorY(){
    return mat2(
        1.,0.,
        0.,-1.
    );
}
// 指定轴镜像
mat2 mirror(vec2 axis){
    axis=normalize(axis);
    float x=axis.x,y=axis.y;
    return mat2(
        1.-2.*x*x,-2.*x*y,
        -2.*x*y,1.-2.*y*y
    );
}
// 沿着X轴错切
mat2 shearX(float x){
    return mat2(
        1.,x,
        0.,1.
    );
}
// 沿着Y轴错切
mat2 shearY(float y){
    return mat2(
        1.,0.,
        y,1.
    );
}
// 指定轴错切
mat2 shear(vec2 axis){
    float x=axis.x,y=axis.y;
    return mat2(
        1.,x,
        y,1.
    );
}